# -*-coding: Utf-8 -*-
# @File : db_hander .py
# author: Chimengmeng
# blog_url : https://www.cnblogs.com/dream-ze/
# Time：2023/6/12

'''
数据处理层
'''

import os, sys
from conf import settings
import pickle


# 保存用户数据
def save_data(obj):
    '''
    对传入的用户对象进行保存
    :param obj: 传入的obj对象
    :return:
    '''
    # （1）获取对象的保存文件路径
    # 以类名区分文件夹的不同
    # obj.__class__ : 获取当前对象的类
    # obj.__class__.__name__ : 获取当前对象的类的名字
    class_name = obj.__class__.__name__
    user_dir_path = os.path.join(settings.DB_PATH, class_name)

    # （2）判断文件夹是否存在，不存在则创建
    if not os.path.exists(user_dir_path):
        os.mkdir(user_dir_path)

    # （3）文件夹存在，则创建当前用户的pickle文件路径，以用户名作文文件名字
    user_path = os.path.join(user_dir_path, obj.username)

    # （4） 打开文件并保存对象，通过pickle方法
    with open(user_path, 'wb') as f:
        pickle.dump(obj, f)


# 查看数据
# (类,username)
def select_data(cls, username):
    '''

    :param cls: 类名
    :param username: 用户名
    :return:
    '''
    # （1）获取对象的保存文件路径
    # 以类名区分文件夹的不同
    # cls = obj.__class__ : 已经实例化的类
    # cls.__name__ : 获取当前类的名字
    class_name = cls.__name__
    user_dir_path = os.path.join(settings.DB_PATH, class_name)

    # （2）判断文件夹是否存在，不存在则创建
    if not os.path.exists(user_dir_path):
        os.mkdir(user_dir_path)

    # （3）文件夹存在，则创建当前用户的pickle文件路径，以用户名作文文件名字
    user_path = os.path.join(user_dir_path, username)

    # （4） 打开文件并获取对象，通过pickle方法
    # （4.1） 判断文件是否存在
    if os.path.exists(user_path):
        # () 文件存在，获取对象并存储
        with open(user_path, 'rb') as f:
            obj = pickle.load(f)
            return obj

    # 文件不存在默认返回None
    return None
